package com.itheima.reflect2;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class MyReflectDemo {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
        //2.获取构造方法
        //先获取class对象
        Class clazz = Class.forName("com.itheima.reflect2.Student");
        //2.1获取所有公共的的构造方法
       /* Constructor[] cons1 = clazz.getConstructors();
        for (Constructor con : cons1) {
            System.out.println(con);
        }*/

        //2.2获取所有的构造方法
        /*Constructor[] cons2 = clazz.getDeclaredConstructors();
        for (Constructor con : cons2) {
            System.out.println(con);
        }*/

        //2.3获取单个公共的构造方法,参数是对应参数类型的.class
        /*Constructor con = clazz.getConstructor(String.class, int.class);
        System.out.println(con);*/

        //2.4获取单个的构造方法
        Constructor con = clazz.getDeclaredConstructor(int.class);
        System.out.println(con);

        //3.使用获取到的构造方法创建对象
        //如果构造方法不是public修饰的,需要设置setAccessible(true)，取消访问检查
        con.setAccessible(true);
        Student stu = (Student) con.newInstance(12);
        System.out.println(stu);

    }
}
